﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>信息框 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The 信息框 function displays the specified text in a small window containing one or more buttons (such as Yes and No)." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
<style type="text/css">
  .fopt {
    width: 4em;
    text-align: center
  }
  .fnum {
    width: 4em;
    text-align: right
  }
</style>
</head>
<body>

<h1>信息框</h1>

<p>在含有一个或多个按钮(例如"是"和"否") 的小窗口中显示指定的文本.</p>

<pre class="Syntax"><span class="func">信息框</span> <span class="optional">Text, Title, Options</span>
Result := <span class="func">信息框</span>(<span class="optional">Text, Title, Options</span>)</pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>Text</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>如果省略所有的参数, 则 信息框 会显示 &quot;Press OK to 跳过.&quot;. 否则, 此参数表示消息框中显示的文本, 用来引导用户如何操作或提示信息.</p>
    <p>可以使用<a href="../misc/EscapeChar.htm">转义序列</a>来表示特殊字符. 例如, `n 表示换行符, 它结束当前行并开始一个新行. 因此, 使用 text1`n`ntext2 会在 text1 和 text2 之间添加一个空行.</p>
    <p>如果 <em>Text</em> 较长, 可以通过<a href="../Scripts.htm#continuation">延续片段</a>的方法将其分解成较短的几行, 这样可以增加可读性和可维护性.</p>
  </dd>

  <dt>Title</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>消息框窗口的标题. 如果省略, 那么它默认为 <a href="../Variables.htm#ScriptName">内_脚本名</a> 的当前值.</p>
  </dd>

  <dt>Options</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>表示消息框的类型和可能的按钮组合. 如果为空或省略, 则默认为 0. 请参阅下面的表格来了解允许的值.</p>
  </dd>

</dl>

<h2 id="vftop"><em>Options</em> 参数的值</h2>
<p><em>Options</em> 参数可以是以下组的数字值的组合(和), 这些值直接传递给操作系统的 MessageBox 函数, 也可以是由至少一个空格或制表符分隔的不区分大小写的选项组成的字符串. 字符串中还可以包含一个或多个数字选项.</p>

<h3 id="Group_1_Buttons">组 #1: 按钮</h3>
<p>若要指定在消息框中显示的按钮, 请添加以下值<strong>之一</strong>:</p>
<table class="info">
  <tr>
    <th>字符串</th>
    <th>十进制</th>
    <th>十六进制</th>
    <th style="text-align:left">描述</th>
  </tr>
  <tr>
    <td class="fopt">O</td>
    <td class="fnum">0</td>
    <td class="fnum">0x0</td>
    <td>仅显示一个 OK(确认) 按钮. 也可以使用 OK 来代替 O.</td>
  </tr>
  <tr>
    <td class="fopt">OC</td>
    <td class="fnum">1</td>
    <td class="fnum">0x1</td>
    <td>显示确认和 Cancel(取消) 按钮. 你也可以使用 O/C 或 OKCancel 来代替 OC.</td>
  </tr>
  <tr>
    <td class="fopt">ARI</td>
    <td class="fnum">2</td>
    <td class="fnum">0x2</td>
    <td>显示 Abort(中止(A)), Retry(重试(R)) 和 Ignore(忽略(I)) 按钮. 你也可以使用 A/R/I 或 AbortRetryIgnore 来代替 ARI.</td>
  </tr>
  <tr>
    <td class="fopt">YNC</td>
    <td class="fnum">3</td>
    <td class="fnum">0x3</td>
    <td>显示 Yes(是(Y)), No(否(N)) 和取消按钮. 你也可以使用 Y/N/C 或 YesNoCancel 来代替 YNC.</td>
  </tr>
  <tr>
    <td class="fopt">YN</td>
    <td class="fnum">4</td>
    <td class="fnum">0x4</td>
    <td>显示是(Y) 和否(N) 按钮. 你也可以使用 Y/N 或 YesNo 来代替 YN.</td>
  </tr>
  <tr>
    <td class="fopt">RC</td>
    <td class="fnum">5</td>
    <td class="fnum">0x5</td>
    <td>显示重试(R) 和取消按钮. 你也可以使用 R/C 或 RetryCancel 来代替 RC.</td>
  </tr>
  <tr>
    <td class="fopt">CTC</td>
    <td class="fnum">6</td>
    <td class="fnum">0x6</td>
    <td>显示取消, Try Again(重试(T)) 和 跳过(继续(N)) 按钮. 你也可以使用 C/T/C 或 CancelTryAgainContinue 来代替 CTC.</td>
  </tr>
</table>

<h3 id="Group_2_Icon">组 #2: 图标</h3>
<p>要在消息框中显示一个图标, 请添加以下值<strong>之一</strong>:</p>
<table class="info">
  <tr>
    <th>字符串</th>
    <th>十进制</th>
    <th>十六进制</th>
    <th style="text-align:left">描述</th>
  </tr>
  <tr>
    <td class="fopt">Iconx</td>
    <td class="fnum">16</td>
    <td class="fnum">0x10</td>
    <td>显示停止/错误图标.</td>
  </tr>
  <tr>
    <td class="fopt">Icon?</td>
    <td class="fnum">32</td>
    <td class="fnum">0x20</td>
    <td>显示问号图标.</td>
  </tr>
  <tr>
    <td class="fopt">Icon!</td>
    <td class="fnum">48</td>
    <td class="fnum">0x30</td>
    <td>显示惊叹号图标.</td>
  </tr>
  <tr>
    <td class="fopt">Iconi</td>
    <td class="fnum">64</td>
    <td class="fnum">0x40</td>
    <td>显示星号图标(信息).</td>
  </tr>
</table>

<h3 id="Group_3_Default_Button">组 #3: 默认按钮</h3>
<p>若要指定默认按钮, 请添加以下值<strong>之一</strong>:</p>
<table class="info">
  <tr>
    <th>字符串</th>
    <th>十进制</th>
    <th>十六进制</th>
    <th style="text-align:left">描述</th>
  </tr>
  <tr>
    <td class="fopt">Default2</td>
    <td class="fnum">256</td>
    <td class="fnum">0x100</td>
    <td>使第二个按钮成为默认按钮.</td>
  </tr>
  <tr>
    <td class="fopt">Default3</td>
    <td class="fnum">512</td>
    <td class="fnum">0x200</td>
    <td>使第三个按钮成为默认按钮.</td>
  </tr>
  <tr>
    <td class="fopt">Default4</td>
    <td class="fnum">768</td>
    <td class="fnum">0x300</td>
    <td>使第四个按钮为默认的. 需要存在 <a href="#Help">Help(帮助) 按钮</a>.</td>
  </tr>
</table>

<h3 id="Group_4_Modality">组 #4: 模式</h3>
<p>若要指定对话框的模式, 请添加以下值<strong>之一</strong>:</p>
<table class="info">
  <tr>
    <th>字符串</th>
    <th>十进制</th>
    <th>十六进制</th>
    <th style="text-align:left">描述</th>
  </tr>
  <tr>
    <td class="fopt">&nbsp;</td>
    <td class="fnum">4096</td>
    <td class="fnum">0x1000</td>
    <td>系统模式(始终置顶)</td>
  </tr>
  <tr>
    <td class="fopt">&nbsp;</td>
    <td class="fnum">8192</td>
    <td class="fnum">0x2000</td>
    <td>任务模式</td>
  </tr>
  <tr>
    <td class="fopt">&nbsp;</td>
    <td class="fnum">262144</td>
    <td class="fnum">0x40000</td>
    <td>置顶(WS_EX_TOPMOST 样式)
(和系统模式类似, 但省略了标题栏图标)</td>
  </tr>
</table>

<h3 id="Group_5_Other_Options">组 #5: 其他选项</h3>
<p>若要指定其他选项, 请添加以下值中的<strong>一个或多个</strong>:</p>
<table class="info">
  <tr>
    <th>字符串</th>
    <th>十进制</th>
    <th>十六进制</th>
    <th style="text-align:left">描述</th>
  </tr>
  <tr id="Help">
    <td class="fopt">&nbsp;</td>
    <td class="fnum">16384</td>
    <td class="fnum">0x4000</td>
    <td>
      <p>添加一个帮助按钮. 除非以下两种情况都为真, 否则按下此按钮不会有任何效果:</p>
      <ol>
        <li>信息框 是一个 界面 窗口通过 <a href="../objects/Gui.htm#OwnDialogs">OwnDialogs 选项</a>所拥有的.</li>
        <li>脚本正在监控 WM_HELP 消息(0x53). 例如: <code><a href="OnMessage.htm">在收到消息时</a>(0x53, &quot;WM_HELP&quot;)</code>. 当 WM_HELP 函数被调用时, 可能会通过诸如显示另一个窗口或 信息框 等方式引导用户.</li>
      </ol>
    </td>
  </tr>
  <tr>
    <td class="fopt">&nbsp;</td>
    <td class="fnum">524288</td>
    <td class="fnum">0x80000</td>
    <td>让文本右对齐显示.</td>
  </tr>
  <tr>
    <td class="fopt">&nbsp;</td>
    <td class="fnum">1048576</td>
    <td class="fnum">0x100000</td>
    <td>用于希伯来语/阿拉伯语的从右向左的阅读顺序.</td>
  </tr>
    <tr id="OwnerOption">
      <td class="fopt">Owner<em>HWND</em></td>
      <td class="fnum">&nbsp;</td>
      <td class="fnum">&nbsp;</td>
      <td>要为 信息框 指定<a href="#Owner">所有者窗口</a>, 请使用单词 <code>Owner</code> 后接 HWND(窗口 ID).</td>
    </tr>
  <tr id="Timeout">
    <td class="fopt">T<em>Seconds</em></td>
    <td class="fnum">&nbsp;</td>
    <td class="fnum">&nbsp;</td>
    <td>
      <p>(超时) 如果用户在指定的时间内没有关闭 信息框, 要让 信息框 自动关闭, 请使用字母 <code>T</code> 后接超时秒数, 可以包含小数点. 如果这个值超过 2147483(24.8 天), 将被设置为 2147483.</p>
      <p>如果 信息框 超时, <a href="#Result">返回值</a> 为单词 <code>Timeout</code>.</p>
    </td>
  </tr>
</table>

<h2 id="Return_Value">返回值</h2>
<p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
<p>当从一个表达式中调用时, 信息框 返回以下字符串中的一个来表示用户按下了哪个按钮:</p>
<p>OK<br>
Cancel<br>
Yes<br>
No<br>
Abort<br>
Retry<br>
Ignore<br>
TryAgain<br>
跳过<br>
Timeout(即, 如果 信息框 超时, 则返回单词 "timeout")</p>

<h2 id="Remarks">备注</h2>
<p>消息框通常看起来像这样:</p>
<img src="../static/dlg_message.png" alt="MsgBox" />
<p>要确定用户按下了哪个按钮, 请使用函数的<a href="#Result">返回值</a>. 例如:</p>
<pre>Result := 信息框("Would you like to 跳过? (press Yes or No)",, "YesNo")
如果 Result = "Yes"
    信息框 "You pressed Yes."
否则
    信息框 "You pressed No."

如果 信息框("Retry or cancel?",, "R/C") = "Retry"
    信息框("You pressed Retry.")</pre>
<p>参照<a href="../scripts/index.htm#MsgBoxButtonNames">这个示例</a>可以自定义按钮的名称.</p>
<p><strong>提示</strong>: 当 信息框 窗口处于活动状态时, 按下 <kbd>Control</kbd>+<kbd>C</kbd> 将复制其中的文本到剪贴板. 这适用于所有的 信息框, 而不仅是 AutoHotkey 生成的那些.</p>
<p id="Owner"><strong>界面 窗口当作 信息框</strong>: 通过使用 <a href="../objects/Gui.htm#OwnDialogs">OwnDialogs 选项</a>的方法 界面 窗口可以显示为 <em>modal(模式)</em> 信息框. <em>模式</em> 信息框 在其消失之前会阻止用户与原来的 界面 窗口进行交互. 此时, 不需要指定上表中的系统模式或任务模式选项.</p>
<p>当 <a href="../objects/Gui.htm#OwnDialogs">OwnDialogs 选项</a> <em>无效</em> 时, 任务模式选项(8192) 可用于禁用所有脚本的窗口, 直到用户取消 信息框.</p>
<p>如果指定了 <code>Owner<i>HWND</i></code> 选项, 它将优先于任何其他设置. <i>HWND</i> 可以是任何窗口的 HWND, 即使不是脚本所拥有的窗口.</p>
<p><strong>关闭按钮(在 信息框 的标题栏)</strong>: 由于 信息框 窗口是操作系统内置的特性, 所以它的 <strong>X</strong> 按钮只有在某些按钮存在时才会被启用. 如果只有一个 OK(确认) 按钮, 点击 <strong>X</strong> 按钮等同于点击 OK 按钮. 否则, X 按钮将被禁用, 除非有一个取消按钮, 在这种情况下, 点击 <strong>X</strong> 按钮就等同于按下取消.</p>
<h2 id="Related">相关</h2>
<p><a href="InputBox.htm">输入框</a>, <a href="FileSelect.htm">文件选择框</a>, <a href="DirSelect.htm">目录选择框</a>, <a href="ToolTip.htm">工具提示</a>, <a href="../objects/Gui.htm">界面 对象</a></p>
<h2 id="Examples">示例</h2>
<div class="ex" id="ExBasic">
<p><a href="#ExBasic">#1</a></p>
<pre>
信息框  <em>; "Press OK to 跳过."</em>

信息框 "This is a 字符串."

信息框 "This 信息框 has a custom title.", "A Custom Title"
</pre>
</div>

<div class="ex" id="ExContSec">
<p><a href="#ExContSec">#2</a>: 使用<a href="../Scripts.htm#continuation">延续片段</a>来跨越多行:</p>
<pre>
信息框 "
  (
    The first parameter is displayed as the message.
    The second parameter becomes the window title.
    The third parameter determines the 类型 of message box.
  )", "Window Title", "iconi&quot;
</pre>
</div>

<div class="ex" id="ExRetValue">
<p><a href="#ExRetValue">#3</a>: 根据返回值的不同, 执行不同的操作:</p>
<pre>
如果 信息框("Do you want to 跳过? (Press YES or NO)",, "YesNo") = "No"
    返回

result := 信息框("This 信息框 will time out in 5 seconds.  跳过?",, "Y/N T5")
如果 result = "Timeout"
    信息框 "You didn't press YES or NO within the 5-second period."
否则 如果 result = "No"
    返回
</pre>
</div>

<div class="ex" id="ExExpr">
<p><a href="#ExExpr">#4</a>: 在消息中包含一个变量或子表达式:</p>
<pre>
变量 := 10
信息框 "The initial value is: " var
信息框 "The result is: " var * 2  <em>; <a href="../Variables.htm#concat">连接</a>.</em>
信息框 <a href="Format.htm">格式化字符串</a>("The result is: {1}", var * 2)</pre>
</div>

</body>
</html>